#ifndef _FILE_SYSTEM_H_
 
#define _FILE_SYSTEM_H_
 
#include "storage.h"
 
// 文件系统最大个数
#define FS_NUM_MAX              1
 
struct inode;
// 文件系统描述体
typedef struct super_block
{
    // 文件系统名
    char *name;
    // 文件系统存储设备
    struct storage_device *pDevice;
    // 通过inode获取数据地址的函数指针
    unsigned int (*GetDataAddr)(struct inode *pInode);
    // 通过文件名获取inode的函数指针
    struct inode *(*NameToInode)(char *name);
}fs_t;
 
// 文件描述体
typedef struct inode
{
    // 文件名
    char *name;
    // 控制标识
    unsigned int flags;
    // 文件的数据大小
    unsigned int size;
    // 文件数据地址(相对设备地址)
    unsigned int offset;
    // 文件所属的文件系统的指针
    struct super_block *pFs;
}file_t;
 
// 注册文件系统
int FsRegister(fs_t *pFs,int no);
 
// 去注册文件系统
int FsUnregister(int no);
 
// 打印文件系统名
void FsPrint(void);
 
// 外部可访问的文件系统指针数组
extern fs_t *pFsArray[FS_NUM_MAX];
 
#endif // _FILE_SYSTEM_H_